package cn.jinjimi.domain.data.net;

import cn.jinjimi.domain.data.dto.BaseResDto;
import cn.jinjimi.domain.data.dto.TokenDto;
import okhttp3.ResponseBody;
import retrofit2.Call;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.PUT;
import retrofit2.http.Path;
import retrofit2.http.Query;

/**
 *
 * @author zhenhua
 * @date 16/8/3
 */
public interface AuthService {

    @GET("token/{token}")
    Call<TokenDto> checkToken(@Path("token") String token);

    /**
     * 验证手机号是否注册
     * @param mobile
     * @return
     */
    @GET("account/verification/{mobile}")
    Call<BaseResDto> verificationMobile(@Path("mobile") String mobile);

    /**
     * 获取验证码
     * @param mobile
     * @return
     */
    @PUT("account/captcha/{mobile}")
    Call<BaseResDto> getCaptcha(@Path("mobile") String mobile);

    /**
     * 重置密码
     * @param mobile
     * @param password
     * @param captcha
     * @return
     */
    @PUT("account/password/{mobile}")
    Call<BaseResDto> resetPassword(@Path("mobile") String mobile, @Query("password") String password, @Query("captcha") String captcha);

    /**
     * 密码登陆
     * @param phone
     * @param password
     * @param timestamp
     * @return
     */
    @POST("token/pwd")
    @FormUrlEncoded
    Call<TokenDto> login(@Field("mobile") String phone,
                         @Field("password") String password,
                         @Field("timestamp") long timestamp);

    /**
     * 短信验证码登陆
     * @param phone
     * @param captcha
     * @return
     */
    @POST("token/captcha")
    @FormUrlEncoded
    Call<TokenDto> login(@Field("mobile") String phone, @Field("captcha") String captcha);

    @POST("account")
    @FormUrlEncoded
    Call<TokenDto> create(@Field("mobile") String mobile,
                          @Field("password") String password,
                          @Field("username") String username,
                          @Field("captcha") String captcha);

}
